package com.liu.jbase.service.db;

import java.io.Serializable;
import java.util.List;

import com.liu.jbase.PageListVo;

/**
 * 
 * @author liuxingmi
 * @datetime 2017年2月18日下午8:12:45
 * @desc 
 * @param <R> 响应参数
 * @param <T> 请求参数
 */
public interface IDBBaseService<R, T> {

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:08
	 * @desc 根据id删除数据
	 * @param id
	 * @return
	 */
	int deleteById(Serializable id);
	
	/**
	 * @date 2017年2月21日
	 * @time 下午6:00:47
	 * @author liuxingmi
	 * @desc 删除数据
	 * @param record
	 * @return
	 */
	int delete(T record);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:47
	 * @desc 添加数据
	 * @param record
	 * @return
	 */
	int insert(T record);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:14:57
	 * @desc 根据id查询数据
	 * @param id
	 * @return
	 */
	R queryById(Serializable id);
    
	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:15:08
	 * @desc 查询单个数据
	 * @param record
	 * @return
	 */
	R query(T record);
	
	/**
	 * @date 2017年2月21日
	 * @time 下午7:09:34
	 * @author liuxingmi
	 * @desc 数据统计
	 * @param record
	 * @return
	 */
	Long count(T record);

	/**
	 * @author liuxingmi
	 * @datetime 2017年2月18日下午8:15:36
	 * @desc 查询数据列表
	 * @param record
	 * @return
	 */
    List<R> list(T record);
    
    /**
     * @date 2017年2月21日
     * @time 下午5:35:53
     * @author liuxingmi
     * @desc  分页查询
     * @param entity
     * @param pageListVo
     * @return
     * @throws Exception
     */
    public PageListVo<R> page(T entity, PageListVo<R> pageListVo);
    
    /**
     * @author liuxingmi
     * @datetime 2017年2月18日下午8:15:46
     * @desc 更新数据
     * @param record
     * @return
     */
    int update(T record);
	
}
